Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

АЛГОРИТМИ ДЛЯ ВИКОНАННЯ ОПЕРАЦІЙ З ДОВГИМИ ЧИСЛАМИ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2024
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Захист інформації
Група:
ІБ – 44

Частина тексту файла

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра «Захисту інформації» Звіт Про виконання лабораторної роботи #1 На тему: “ АЛГОРИТМИ ДЛЯ ВИКОНАННЯ ОПЕРАЦІЙ З ДОВГИМИ ЧИСЛАМИ ” Прийняв: Костів Ю. Львів-2009 Мета роботи. Вивчити способи представлення та алгоритми для виконання операцій введення-виведення, порівняння, підсумовування, віднімання довгих чисел та навчитися розробляти програмне забезпечення для реалізації перерахованих алгоритмів на комп’ютері. Завдання. Номер з/п Варіант представлення числа Заповнення невикористаних розрядів Операції з довгими числами  2 2 -1 Віднімання, менше   Виконання роботи. Текст програми #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LEN 50 #define OSN 10000 void InputNum(const char *str, long a[MAX_LEN]) { int j,i=strlen(str); long ln; char *tmp=(char*)malloc(i>>3<<2+8); strcpy(tmp, str); j=0; do { tmp[i]=0; i-=4; if(i<0) i=0; sscanf(&tmp[i], "%d", &ln), a[MAX_LEN - ++j]=ln; } while (i); while (j<MAX_LEN) a[MAX_LEN - ++j]=-1; free(tmp); } void OutputNum(long a[MAX_LEN]) { int i,fn=0; while (fn<MAX_LEN && a[fn]==-1) fn++; if(fn==MAX_LEN) return; for (i=fn;i<MAX_LEN; i++) printf((i==fn) ? "%d" : "%04d", a[i]); } int Less(long a[MAX_LEN], long b[MAX_LEN]) { int i=-1; while (++i<MAX_LEN) if (a[i]==b[i]) continue; else return a[i]<b[i] ? 1 : -1; return 0; } int SubNum(long ta[MAX_LEN], long tb[MAX_LEN], long c[MAX_LEN]) { long *a, *b, tmp; int j,i,to=MAX_LEN-1,minus=0; if (Less(ta,tb)==1) a=tb, b=ta, minus=1; else a=ta, b=tb; for (i=0;i<MAX_LEN;i++) c[i]=a[i]; for (i=MAX_LEN-1; ; i--) { if (b[i]==-1) break; tmp=c[i]-b[i]; if(tmp<0) { tmp+=OSN, j=i; while (c[j-1]-1<0 && j>0) c[j-1]+=-1+OSN, j--; c[j-1]--; } c[i]=tmp; } i=0; while (c[i]<=0 && i<MAX_LEN-1) c[i++]=-1; return minus; } int main() { char *szA=(char*)malloc(500); char *szB=(char*)malloc(500); int g; long a[MAX_LEN], b[MAX_LEN], c[MAX_LEN]; printf("a = "), scanf("%s", szA), printf("b = "), scanf("%s", szB); InputNum(szA,a), InputNum(szB,b); g=SubNum(a,b,c); printf("a - b = "); if(g) printf("-"); OutputNum(c); printf("\n"); free(szA), free(szB); return 0; } Результат виконання. 66555221236121 12312464143123 a-b=54242757092998 Блок-схеми підпрограм та функцій. А) Блок-схема алгоритму введення довгого числа.  Б) Алгоритм виведення довгого числа.  В) Блок-схеми алгоритмів порівняння довгих чисел.  Г) Блок-схема алгоритму віднімання довгих чисел.  Список ідентифікаторів констант, змінних, процедур і функцій, використаних у блок-схемах алгоритмів і програм, та їх пояснення. МахLen Максимальна довжина матриці  Osn Основа ділення  InputNum Функція введення довгого числа  OutputNum Функція виведення довгого числа  Less Функція порівняння «менше»  SubNum Функція віднімання 2х довгих чисел  Main Основна функція   Tmp Змінна для тимчасового зберігання даних  I,J Рахівники  A[MaxLen] Матриця, заповнюєма довгими числами  Fn Значення даного елементу масиву  Minus Значення, яке повертає функція SubNum, - є результатом віднімання двох довгих чисел  szA Розмір пам’яті для А  szB Розмір пам’яті для В   Висновок: На цій л.р. я написав програму на мові С, яка виконує віднімання двох довгих чисел. =\
Антиботан аватар за замовчуванням

27.12.2011 16:12

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини